﻿using System;

namespace TEST03参数传递
{
    class Program
    {
        //Java中方法只有值传递
        //在C#中除了value传递，还有引用传递(ref)和输出传递(out)
        //ref:又进又出：将值传递给方法，并且返回到实参中
        //out：只出不进
        //ref，out返回多个值
        static void Main(string[] args)
        {
            //int i = 1,j = 1,k = 1;
            //valueFun(i);
            //Console.WriteLine("i={0}",i);
            //refFun(ref j);
            //Console.WriteLine("j={0}", j);
            //outFun(out k);
            //Console.WriteLine("k={0}", k);

            //交换两者
            int a = 5;
            int b = 7;
            Console.WriteLine("a is {0}, b is {1}", a, b);
            swapValue(ref a,ref b);
            Console.WriteLine("a is {0}, b is {1}", a, b);

        }

        static void swapValue(ref int a,ref int b)
        {
            int t = a;
            a = b;
            b = t;
        }

    //    static void valueFun(int i)
    //    {
    //        i++;
    //    }
    //    static void refFun(ref int j)
    //    {
    //        j++;
    //    }
    //    static void outFun(out int k)
    //    {
    //        k = 2;
    //        k++;
    //    }
    }
}
